// 处理异步并发的解决方案 计数器的方式
// 有些时候我们想当所有任务都完成之后再执行一个任务，并且这些任务都是异步的，我们很难把握他们都执行完的时机
//计数器方式 就是用来解决这种场景的

// 计数器的方式
// let index = 0;
// function out(){
//     index++;
//     if(index === 2){
//         console.log(school)
//     }
// }

// node api 方法
const fs = require("fs"); // file system 读取文件 操作文件
const path = require('path');

// node 异步i/o,并发
let school = {};

//将name.txt、age.txt都读取存到school对象后，执行callback函数

// function out(){
//     if(Object.keys(school).length==2){
//         console.log(school)
//     }
// }

// function out(obj,length,cb){
//     if(Object.keys(obj).length===length){
//         cb();
//     }
// }

function after(times,callback){  // 调用一次
    return function(){
        if(--times === 0){
            callback();
        }
    }
}
let out = after(2,function(){
    console.log(school);
});
// 每次读取后 都调用out方法
fs.readFile(path.resolve(__dirname,'./name.txt'),'utf8',function(err,data){
    school['name'] = data;
    out();
})
fs.readFile(path.resolve(__dirname,'./age.txt'),'utf8',function(err,data){
    school['age'] = data;
    out();
})
